package conference_handler

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"peilian-api/app/global/bind"
	"peilian-api/app/global/errors"
	"peilian-api/app/model"
	"peilian-api/app/services/conference_service"
	"peilian-api/utils/format"
)

//SaveConference
/*创建会议*/
func SaveConference(c *gin.Context) {
	fmt.Println("创建会议 ---------")
	var conAddDTO model.ConferenceAddDTO
	// 它从HTTP请求的JSON体中解析数据，并将其绑定到一个名为conference的结构体变量上。如果解析过程中出现错误
	if err := c.ShouldBindJSON(&conAddDTO); err != nil {
		format.NewResponseJson(c).Err(30001, err.Error())
		return
	}
	err := new(conference_service.ConferenceService).SaveConference(c, conAddDTO)
	if err != nil {
		fmt.Println("创建会议失败，错误信息 ={}, msg：{} ", err.Code, err.Err.Error())
		format.NewResponseJson(c).Err(err.Code, err.Err.Error())
		return
	}
	// 保存成功
	format.NewResponseJson(c).SuccessObj(&conAddDTO)
}

/*
查询会议列表
*/
func ListConferencePage(ctx *gin.Context) {
	var cQuery model.ConferenceReq
	if err := bind.ShouldBinding(ctx, &cQuery); err != nil {
		format.NewResponseJson(ctx).Err(errors.PublicErrorCode, errors.ParamBindError)
		return
	}
	page, list, err := new(conference_service.ConferenceService).ListConferencePage(ctx, cQuery)
	if err != nil {
		format.NewResponseJson(ctx).Err(err.Code, err.Err.Error())
		return
	}
	format.NewResponseJson(ctx).SuccessDataList(int(page), list)
}

//DeleteConferencePage
/**
*@author: yy
*@description: 删除会议信息
*@date :2024/8/16 下午4:48
**/
func DeleteConferencePage(ctx *gin.Context) {
	param := ctx.Param("conferenceId")
	fmt.Println("需要删除的会议id = {}", param)
	errRes := new(conference_service.ConferenceService).DeleteConference(ctx)
	if errRes != nil {
		format.NewResponseJson(ctx).Err(errRes.Code, errRes.Err.Error())
		return
	}
	format.NewResponseJson(ctx).SuccessObj(struct{}{})
}

//CancelConference
/**
*@author: yy
*@description: 取消会议
*@date :2024/8/19 下午2:12
**/
func CancelConference(ctx *gin.Context) {
	errRes := new(conference_service.ConferenceService).CancelConference(ctx)
	if errRes != nil {
		format.NewResponseJson(ctx).Err(errRes.Code, errRes.Err.Error())
		return
	}
	format.NewResponseJson(ctx).SuccessObj(struct{}{})
}
